package com.xmotor.test_annotation;

import java.lang.reflect.Method;

public class Runner {
    public static void launch(Class<?> c){
        try {
            Object o = c.newInstance();//反射新建实例
            Method[] a = c.getMethods();//获得所有方法
            for(Method t : a) {
                //t方法上是否出现了 @TestAnnotation 注解
                if (t.isAnnotationPresent(TestAnnotation.class)) {
                    //从t方法取出注解信息
                    TestAnnotation test = t.getAnnotation(TestAnnotation.class);
                    int id = test.id();//取注解中的id值
                    //取value,没有value则取title的值
                    String title = test.title();
                    //打印注解信息
                    System.out.println("id="+id+", title="+title);
                    t.invoke(o);//反射执行t方法
                    System.out.println("--------------------");
                }
            }

        } catch (Exception e) {
            System.out.println("执行失败");
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Runner.launch(TestClass.class);
    }
}
